In the past, designers of real-time embedded avionics software have typically designed the software on a host computer by breaking the tasks down into separate programs for each line replaceable unit (LRU). Each LRU software program would be separately developed, compiled, and then downloaded into target hardware where it could be tested and debugged.
While this approach or similar approaches have been widely used in the past they have severe drawbacks. First of all, development of real-time embedded software typically requires the target computer to be halted to examine the state of processing, however, in a complex system it is often not possible to stop the target without simultaneously stopping the signals generated into the target computer since the missed signals may be crucial to the target computer once execution is resumed.
Secondly, test stations incorporating actual avionics equipment are generally expensive and must be shared among the entire software development team. For large systems employing many engineers, this often results in a bottleneck, since parallel development is limited by the hardware resources available.
Thirdly, typically software verification tests which test individual modules instead of the integrated software system are not as effective in testing functional requirements as are black box tests. Testing of functional requirements usually requires the coordinated operation of several software modules.
Fourthly, although testing software algorithms on a host computer is often much more efficient than embedded target testing, host-based testing alone usually cannot be used to determine compliance to requirements or to achieve FAA certification.
Fifthly, often, simulation programs become unmanageably complex as the number of simulated devices increases and the interactions between them increases in a non-linear proportion.
Lastly, development of embedded software systems is typically inefficient due to the need to develop, compile, and link on a host computer and then download the software into the target hardware to be tested and debugged.
Consequently, there exists a need for improvement in testing of avionics software.